﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using distrilan;
using System.IO;


public partial class admin_Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //se nella sessione non c'e utente amministratore, redirigo l'utente alla pagina di login
        if (SiteUser.IsLoggedAdmin() == false)
            Server.Transfer("index.aspx");

        SqlDataSourceVisualizzaArticoli.SelectCommand = HiddenQueryDataSource.Value;
        SqlDataSourceVisualizzaArticoli.DataBind();
        GridViewVisualizzaArticoli.DataBind();
        
        //carico il contenuto delle drop down list dei clienti solo in fase di caricamento iniziale della pagina
        if (!IsPostBack)
        {
            enumDropDownList dd1 = enumDropDownList.ddClienti_1;
            enumDropDownList dd2 = enumDropDownList.ddClienti_2;
            riempiDropDownListClienti(dd1);
            riempiDropDownListClienti(dd2);
        }
    }


    /// <summary>
    /// mostra gli articoli che i clienti hanno visto per periodo e per cliente
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void visualizzaArticoliPeriodoCliente(object sender, EventArgs e)
    {
        String query = "";

        //se ho selezionato tutti NON metto nella query l'username
        if (dropDownClienti_2.SelectedItem.Value == "*")
            query = "SET DATEFORMAT dmy SELECT * FROM articoliVisualizzati WHERE data BETWEEN '" + txtDataInizio_2.Text + "' AND '" + txtDataFine_2.Text + "'";
        else
            query = "SET DATEFORMAT dmy SELECT * FROM articoliVisualizzati WHERE data BETWEEN '" + txtDataInizio_2.Text + "' AND '" + txtDataFine_2.Text + "' AND username ='" + dropDownClienti_2.SelectedItem.Value + "'";

        SqlDataSourceVisualizzaArticoli.SelectCommand = query;

        //imposto la hidden per la ricerca
        HiddenQueryDataSource.Value = SqlDataSourceVisualizzaArticoli.SelectCommand;

        SqlDataSourceVisualizzaArticoli.DataBind();
        GridViewVisualizzaArticoli.DataBind();
    }


    /// <summary>
    /// visualizza gli articoli che i clienti hanno visto per periodo
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void ButtonVisualizzaArticoliDaA_Click(object sender, EventArgs e)
    {
        //controllo se ci sono le date
        if (txtDataInizio.Text.Length == 0 | txtDataFine.Text.Length == 0)
            return;

        SqlDataSourceVisualizzaArticoli.SelectCommand = "SET DATEFORMAT dmy SELECT * FROM articoliVisualizzati WHERE data BETWEEN '" + txtDataInizio.Text;
        SqlDataSourceVisualizzaArticoli.SelectCommand += "' AND '" + txtDataFine.Text + "'";

        //imposto la hidden per la ricerca
        HiddenQueryDataSource.Value = SqlDataSourceVisualizzaArticoli.SelectCommand;

        SqlDataSourceVisualizzaArticoli.DataBind();
        GridViewVisualizzaArticoli.DataBind();
    }


    /// <summary>
    /// mostra le visualizzazioni di articoli per cliente
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void ButtonVisualizzaArticoliClienti_Click(object sender, EventArgs e)
    {
        String query ="";

        //se ho selezionato tutti gli username
        if (dropDownClienti.SelectedItem.Value == "*")
            query = "SELECT * FROM articoliVisualizzati";
        else
            query = "SELECT * FROM articoliVisualizzati WHERE username = '" + dropDownClienti.SelectedItem.Value + "'";

        SqlDataSourceVisualizzaArticoli.SelectCommand = query;

        //imposto la hidden per la ricerca
        HiddenQueryDataSource.Value = query;

        SqlDataSourceVisualizzaArticoli.DataBind();
        GridViewVisualizzaArticoli.DataBind();
    }

    

    /// <summary>
    /// riempie le drop down list dei clienti
    /// </summary>
    protected void riempiDropDownListClienti(enumDropDownList dropDown)
    {
        SqlConnection connection = new SqlConnection(distrilan.Utility.GetDBConnectionString());
        connection.Open();

        string query = "SELECT DISTINCT username FROM articoliVisualizzati";
        DataSet ds = new DataSet();
        try
        {
            //come prima cosa elimino i controlli gia presenti
            dropDownClienti.Controls.Clear();

            SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
            adapter.Fill(ds);

            ListItem lItem;
            foreach (DataRow row in ds.Tables[0].Rows)
            {

                String username = row["username"].ToString();
                username = username.Trim();

                //se c'è stringa vuota inserisco tutti i clienti, altrimenti metto il nome del cliente
                if (username.Length == 0)
                {
                    username = "tutti i clienti";
                    lItem = new ListItem(username, "*");
                }
                else
                    lItem = new ListItem(username, username);

                //cerco di capire quale drop down va riempita e lo faccio
                switch (dropDown)
                {
                    case enumDropDownList.ddClienti_1:
                        dropDownClienti.Items.Add(lItem);
                        break;
                    case enumDropDownList.ddClienti_2:
                        dropDownClienti_2.Items.Add(lItem);
                        break;
                    default:
                        break;
                }
            }
        }
        catch (Exception)
        { }
        finally
        {
            connection.Close();
        }
    }

    /// <summary>
    /// tipologia di dropdownl list da riempire
    /// </summary>
    public enum enumDropDownList
    { 
        ddClienti_1,
        ddClienti_2
    }
}
